package com.meeruu.sg.account.core.api.service;

import com.meeruu.common.model.result.BaseRpcResult;
import com.meeruu.sg.account.core.api.dto.response.SysCoreConfigDTO;

import java.util.Date;
import java.util.List;

public interface SysCoreConfigService extends AccountCoreFacadeBase {

    /**
     * 查询提现配置
     * @return  选中的提现配置（可以不选）
     */
    BaseRpcResult<List<SysCoreConfigDTO>> queryWithdrawConfig();

    /***
     * 根据配置编码查询对应系统配置
     * @param code
     * @return
     */
    BaseRpcResult<SysCoreConfigDTO> queryByCode(String code);

    /**
     * 批量查询配置
     * @Param   codes           字段名集合
     * @return 配置列表(有效数据)
     */
    BaseRpcResult<List<SysCoreConfigDTO>> queryConfigList(List<String> codes);


    /** ================== 以下是提供给admin使用的接口 ============ */

    /**
     * 批量修改
     * @param configDTOS
     * @return
     */
    BaseRpcResult<Void> addConfigList(List<SysCoreConfigDTO> configDTOS);

    /**
     * 保存提现配置(提现配置有特殊性,单独开一个)
     * @param configDTOS
     */
    BaseRpcResult<Void> saveWithdrawConfigList(List<SysCoreConfigDTO> configDTOS);

    /**
     * 根据code集合和时间查询
     * @param codes
     * @param time
     * @return      若时间为空,返回满足code集合的数据集合,会存在同一条数据的有效和无效数据
     *              若存在时间,返回时间之后,距离时间最近的一条数据,这种情况每个code只会有一条数据
     */
    BaseRpcResult<List<SysCoreConfigDTO>> queryConfigs(List<String> codes, Date time);

    /**
     * 根据配置编码和时间查询对应系统配置 (会返回和时间最近的一条配置，可能有效，可能无效)
     * @param code
     * @param time
     * @return
     */
    BaseRpcResult<SysCoreConfigDTO> queryByTime(String code, Date time);

    /******************资金中心配置*******************/

    BaseRpcResult<List<SysCoreConfigDTO>> queryFundManagerWithdrawConfig(List<String> codes);



}
